/**
 * @author YanYeek
 * @time 2021/06/01
 * @impact 工具模块
 */
module.exports = {
	/**
	 * 给按钮绑定回调事件
	 * @param {} target*这个 node 节点是你的事件处理代码组件所属的节点*
	 * @param {} component*脚本名*
	 * @param {} handler*脚本回调处理函数*
	 * @param {} customEventData*按钮回调的参数--字符串*
	 * @param {} btn*按钮所在的节点*
	 */
	addCallbackToButton: (target, component, handler, customEventData, btn) => {
		let clickEventHandler = new cc.Component.EventHandler();
		clickEventHandler.target = target; // 这个 node 节点是你的事件处理代码组件所属的节点
		clickEventHandler.component = component; // 这个是代码文件名
		clickEventHandler.handler = handler;
		clickEventHandler.customEventData = customEventData;

		if (!btn.getComponent(cc.Button)) {
			btn.addComponent(cc.Button);
		}
		let button = btn.getComponent(cc.Button);
		button.clickEvents.push(clickEventHandler);
	},
	/**
	 * 给按钮绑定回调事件
	 * @param {} target*这个 node 节点是你的事件处理代码组件所属的节点*
	 * @param {} component*脚本名*
	 * @param {} handler*脚本回调处理函数*
	 * @param {} customEventData*按钮回调的参数--字符串*
	 * @param {} btn*按钮所在的节点*
	 */
	addCallbackToSlider: (
		target,
		component,
		handler,
		customEventData,
		slider
	) => {
		let clickEventHandler = new cc.Component.EventHandler();
		clickEventHandler.target = target; // 这个 node 节点是你的事件处理代码组件所属的节点
		clickEventHandler.component = component; // 这个是代码文件名
		clickEventHandler.handler = handler;
		clickEventHandler.customEventData = customEventData;

		if (!btn.getComponent(cc.Button)) {
			btn.addComponent(cc.Button);
		}
		slider.slideEvents.push(sliderEventHandler);
	},
	checkIsCross: (node) => {
		if (node) {
			// 获取世界坐标系下的包围盒
			let rect1 = node.getBoundingBoxToWorld();
			let rect2 = cc.rect(0, 0, cc.winSize.width, cc.winSize.height);
			return rect1.intersects(rect2);
		} else {
			return false;
		}
	},
	/* addAnimation: (node, frames, clipName, wrapMode, speed) => {
		if (!node.getComponent(cc.Animation)) {
			node.addComponent(cc.Animation);
		}
		let animation = node.getComponent(cc.Animation);
		let clip = cc.AnimationClip.createWithSpriteFrames(
			frames,
			frames.length
		);
		clip.name = clipName;
		clip.wrapMode = wrapMode;
		clip.speed = speed ? speed : 1;
		animation.addClip(clip);
		return animation;
	}, */
	addAnimation(node, frames, clipName, wrapMode, speed, fun) {
		if (!node.getComponent(cc.Animation)) {
			node.addComponent(cc.Animation);
		}
		let animation = node.getComponent(cc.Animation);
		// frames 这是一个 SpriteFrame 的数组.
		let clip = cc.AnimationClip.createWithSpriteFrames(
			frames,
			frames.length
		);
		clip.name = clipName;
		clip.wrapMode = wrapMode;

		// 添加帧事件
		clip.events.push({
			frame: frames.length, // 准确的时间，以秒为单位。这里表示将在动画播放到 1s 时触发事件
			func: fun, // 回调函数名称
			// params: [1, "hello"], // 回调参数
		});
		clip.speed = speed === undefined ? 1 : speed;
		// animation.defaultClip = clipName;
		animation.addClip(clip);
		return animation;
	},
	resLoader(url = "", store, type) {
		if (!store) {
			console.log("仓库路径有误");
			return;
		}
		cc.loader.loadResDir(url, type, (err, list) => {
			if (err) {
				cc.error(err.message || err);
				return;
			}
			for (let i = 0; i < list.length; i++) {
				store[list[i].name] = list[i];
				cc.vv.hasLoadResCount++;
				// console.log("loadSuccess");
			}
		});
	},
};
